/*
 * Matrix2.h
 *
 *  Created on: Jan 14, 2012
 *   
 */

#ifndef MATRIX2_H_ 
#define MATRIX2_H_

namespace Physics
{
	class Matrix2
	{
	private:
		float xx, xy;
		float yx, yy;

		// should it return the newly scaled matrix?
		// or just scale itself by void?
		// e.g: Matrix2 matrix;
		// matrix = matrix.Scale(3,3,3)
		// or
		// Matrix2 matrix;
		// matrix.Scale(3,3,3);  
		void Scale(float scaleX, float scaleY);

	public:
		Matrix2();
		Matrix2( float XX, float XY, float YX, float YY);
		~Matrix2();
		void identity();

		float getIndex(int row, int col);
		Matrix2 operator +(Matrix2 &matrix);
		Matrix2 operator -(Matrix2 &matrix);
		Matrix2 operator *(Matrix2 &matrix);
		
		// calls Scale(x,y,z)
		void Scale(float scaleAmount);
	};
} /* NAMESPACE */

#endif /* MATRIX2_H_ */
